package src;

import java.util.*;
import java.util.concurrent.ConcurrentLinkedQueue;

public class CasamenteraGaleAndShapley extends Casamentera {
	
	
	
	Queue<Persona> colaDeSolteros;
	public CasamenteraGaleAndShapley(TablaDePreferencias preferenciasHombres, TablaDePreferencias preferenciasMujeres){
		super(preferenciasHombres,preferenciasMujeres);
		this.colaDeSolteros= new ConcurrentLinkedQueue<Persona>();
		
	}
	
	
	public void casar() {
		encolarHombres();
		while(!colaDeSolteros.isEmpty()){
			Persona hombreActual = colaDeSolteros.poll();
			while(!hombreActual.enPareja() ){ 
				hombreActual.declararseASiguiente();
				if(hombreActual.provocoDivorcios())
					colaDeSolteros.add(hombreActual.personaSola());
			}
		}
		super.casar();
	}
	
	void encolarHombres() {
		Iterator<Persona> itHombres= preferenciasHombres.getPersonas();
		while(itHombres.hasNext()){
			colaDeSolteros.offer(itHombres.next());
		}
	}
}
